<HTML>

<SCRIPT>
function setFocus() {	
	if ((navigator.appName != "Netscape") && (parseFloat(navigator.appVersion) == 2)) {
	return;
	} else {
	self.focus();
	}
}
</SCRIPT><HEAD><TITLE>Index</TITLE></HEAD>

<BODY
	BGCOLOR		= #FFFFFF
	TEXT = #000000
onLoad="setFocus()";
>

<P>Names of design patterns appear in small capitals: e.g., A<FONT
SIZE=-1>DAPTER</FONT>.  Page numbers in bold indicate the definition
of a term. Numbers in italics indicate a diagram for the term.
Letters after a diagram's page number indicate the kind of diagram:
a "c" denotes a class diagram, an "i" denotes an interaction diagram,
and an "o" denotes an object diagram. For example, <I>88co</I>
means that a class and object diagram appears on page 88.</P>

<H2>S</H2>

<DL>

<DT>scope of design pattern, <I>see</I> <A HREF="index-D.htm#design pattern" target="TEXT">design pattern, scope</A></DT>

<DT>Scrollbar
<A HREF="chap2fs.htm#editor_products" TARGET="_mainDisplayFrame"><I>50c</I></A>
</DT>

<DT>ScrollDecorator<A HREF="pat4dfs.htm#scrolldecorator-176o" TARGET="_mainDisplayFrame"><I>176o</I></A>,
<A HREF="pat4dfs.htm#scrolldecorator-176c" TARGET="_mainDisplayFrame"><I>176c</I></A>
</DT>

<DT>Scroller 
<A HREF="chap2fs.htm#scroller" TARGET="_mainDisplayFrame">45</A>,
<A HREF="chap2fs.htm#Fig-2.8" TARGET="_mainDisplayFrame"><I>46o</I></A>
</DT>

<DT>Self 
<A HREF="chap1fs.htm#self" TARGET="_mainDisplayFrame">4</A>, 
<A HREF="pat3dfs.htm#self" TARGET="_mainDisplayFrame">121</A>, 
<A HREF="pat5hfs.htm#self" TARGET="_mainDisplayFrame">309</A>
</DT>

<DT>sender</DT>

<DD>decoupling from receiver 
<A HREF="disc5fs.htm#decouple-sandr" TARGET="_mainDisplayFrame">346</A>
</DD>

<DT>SequenceExpression
<A HREF="pat5cfs.htm#244co" TARGET="_mainDisplayFrame"><I>244co</I></A>, 
<A HREF="pat5kfs.htm#seqexp" TARGET="_mainDisplayFrame">343</A>
</DT>

<DD>implemented in Smalltalk 
<A HREF="pat5cfs.htm#seqexp-smalltk" TARGET="_mainDisplayFrame">249</A>
</DD>

<DT>sequencing requests 
<A HREF="pat5bfs.htm#sequence-request" TARGET="_mainDisplayFrame">234</A>
</DT>

<DT>shallow copy, <I>see</I> <A HREF="index-C.htm#copy" target="TEXT">copy, shallow</A></DT>

<DT>Shape 
<A HREF="pat4afs.htm#motivation" TARGET="_mainDisplayFrame">139</A>,
<A HREF="pat4afs.htm#shape-140c" TARGET="_mainDisplayFrame"><I>140c</I></A>, 
<A HREF="pat4afs.htm#samplecode" TARGET="_mainDisplayFrame">146</A>
</DT>

<DT>shrinkability 
<A HREF="pat5ifs.htm#shrinkability" TARGET="_mainDisplayFrame">320</A>
</DT>

<DT>signature 
<A HREF="chap1fs.htm#def-signature" TARGET="_mainDisplayFrame"><B>13</B></A>, 
<A HREF="chapAfs.htm#signature" TARGET="_mainDisplayFrame"><B>361</B></A>
</DT>

<DT>SimpleCompositor 
<A HREF="chap2fs.htm#simple-compositor" TARGET="_mainDisplayFrame">42</A>,
<A HREF="chap2fs.htm#simple-compositor-42c" TARGET="_mainDisplayFrame"><I>42c</I></A>, 
<A HREF="pat5ifs.htm#simplecompositor" TARGET="_mainDisplayFrame">315</A>,
<A HREF="pat5ifs.htm#315c" TARGET="_mainDisplayFrame"><I>315c</I></A>, 
<A HREF="pat5ifs.htm#simplecompositor2" TARGET="_mainDisplayFrame">321</A>
</DT>

<DT>single static assignment form, SSA 
<A HREF="pat4cfs.htm#ssa" TARGET="_mainDisplayFrame">172</A>
</DT>

<DT>single-dispatch, <I>see</I> <A HREF="index-D.htm#dispatch" target="TEXT">dispatch, single</A></DT>

<a name="S<FONT SIZE=-1>INGLETON</FONT>"></a>
<DT>S<FONT SIZE=-1>INGLETON</FONT> 
<A HREF="pat3efs.htm#top" TARGET="_mainDisplayFrame"><B>127</B></A>
</DT>

<DD>C++ implementation 
<A HREF="pat3efs.htm#single-cpp-imp" TARGET="_mainDisplayFrame">129</A>, 
<A HREF="pat3efs.htm#single-cpp-imp2" TARGET="_mainDisplayFrame">131</A>
</DD>

<DD>in catalog summary 
<A HREF="chap1fs.htm#cat-single" TARGET="_mainDisplayFrame">9</A>
</DD>

<DD>registry of 
<A HREF="pat3efs.htm#single-registry" TARGET="_mainDisplayFrame">130</A>
</DD>

<DD>subclassing 
<A HREF="pat3efs.htm#single-subclass" TARGET="_mainDisplayFrame">130</A>
</DD>

<DD>used to implement A<FONT SIZE=-1>BSTRACT</FONT>
	F<FONT SIZE=-1>ACTORY</FONT> 
<A HREF="pat3afs.htm#single-absfact" TARGET="_mainDisplayFrame">90</A>
</DD>

<a name="Singleton"></a>
<DT>Singleton</DT>

<DD>participant of S<FONT SIZE=-1>INGLETON</FONT><A HREF="pat3efs.htm#structure" TARGET="_mainDisplayFrame"><I>127c</I></A>, 
<A HREF="pat3efs.htm#participants" TARGET="_mainDisplayFrame">128</A>
</DD>

<DT>Sketchpad 
<A HREF="pat3dfs.htm#knownuses" TARGET="_mainDisplayFrame">125</A>
</DT>

<DT>SkipList
<A HREF="pat5dfs.htm#skiplist-258c" TARGET="_mainDisplayFrame"><I>258c</I></A>, 
<A HREF="pat5dfs.htm#skiplist-265" TARGET="_mainDisplayFrame">265</A>
</DT>

<DT>skiplist 
<A HREF="pat5dfs.htm#def-skiplist" TARGET="_mainDisplayFrame">258</A>
</DT>

<DT><a name="Smalltalk"></a>Smalltalk-80, <I>see also</I> <a href="index-O.htm#ObjectWorks\SmallTalk" target="TEXT">ObjectWorks\Smalltalk,</a> <a href="index-S.htm#Smalltalk/V" target="TEXT">Smalltalk/V</a></DT>

<DD>use of B<FONT SIZE=-1>UILDER</FONT><A HREF="pat3bfs.htm#smalltalk-use-builder" TARGET="_mainDisplayFrame">105</A>
</DD>

<DD>use of C<FONT SIZE=-1>OMPOSITE</FONT><A HREF="pat4cfs.htm#knownuses" TARGET="_mainDisplayFrame">172</A>
</DD>

<DD>use of F<FONT SIZE=-1>ACTORY</FONT> M<FONT SIZE=-1>ETHOD</FONT> 
<A HREF="pat3cfs.htm#smalltalk-use-factmeth" TARGET="_mainDisplayFrame">115</A>
</DD>

<DD>use of I<FONT SIZE=-1>NTERPRETER</FONT><A HREF="pat5cfs.htm#smalltalk-use-interp" TARGET="_mainDisplayFrame">251</A>
</DD>

<DD>use of I<FONT SIZE=-1>TERATOR</FONT> 
<A HREF="pat5dfs.htm#smalltalk-use-iter" TARGET="_mainDisplayFrame">270</A>
</DD>

<DD>use of O<FONT SIZE=-1>BSERVER</FONT> 
<A HREF="pat5gfs.htm#smalltalk-use-observe" TARGET="_mainDisplayFrame">303</A>
</DD>

<DD>use of S<FONT SIZE=-1>INGLETON</FONT><A HREF="pat3efs.htm#smalltalk-use-single" TARGET="_mainDisplayFrame">133</A>
</DD>

<DD>use of V<FONT SIZE=-1>ISITOR</FONT> 
<A HREF="pat5kfs.htm#smalltalk-use-visitor" TARGET="_mainDisplayFrame">344</A>
</DD>

<a name="Smalltalk/V"></a>
<DT>Smalltalk/V</DT>

<DD>use of I<FONT SIZE=-1>NTERPRETER</FONT><A HREF="pat5cfs.htm#smalltkv-use-interp" TARGET="_mainDisplayFrame">251</A>
</DD>

<DD>use of M<FONT SIZE=-1>EDIATOR</FONT> 
<A HREF="pat5efs.htm#smalltkv-use-media" TARGET="_mainDisplayFrame">278</A>, 
<A HREF="pat5efs.htm#smalltkv-use-media2" TARGET="_mainDisplayFrame">281</A> 
</DD>

<DT>smart pointers 
<A HREF="pat4gfs.htm#def-smartpointer" TARGET="_mainDisplayFrame"><B>209</B></A>
</DT>

<DT>smart references 
<A HREF="pat4gfs.htm#def-smartref" TARGET="_mainDisplayFrame"><B>209</B></A>
</DT>

<DT>software platform</DT>

<DD>isolating application from 
<A HREF="chap1fs.htm#app-isolation" TARGET="_mainDisplayFrame">24</A>
</DD>

<DT>Solitaire, <I>see</I> <A HREF="index-S.htm#Singleton" target="TEXT">S<FONT SIZE=-1>INGELTON</FONT></A></DT>

<DT>SolverState<A HREF="pat5ffs.htm#solverstate" TARGET="_mainDisplayFrame">283-284</A>
</DT>

<DT>SPECTalk</DT>

<DD>use of I<FONT SIZE=-1>NTERPRETER</FONT><A HREF="pat5cfs.htm#spectalk-use-interp" TARGET="_mainDisplayFrame">255</A>
</DD>

<DT>spelling checking 
<A HREF="chap2fs.htm#top" TARGET="_mainDisplayFrame">64</A>
</DT>

<DT>SpellingChecker 
<A HREF="chap2fs.htm#spellcheck" TARGET="_mainDisplayFrame">71-73</A>
</DT>

<DT>SpellingCheckerVisitor<A HREF="chap2fs.htm#spellcheck-visitor" TARGET="_mainDisplayFrame">75</A>
</DT>

<DT>StandardMazeBuilder 
<A HREF="pat3bfs.htm#standardmazebuilder" TARGET="_mainDisplayFrame">103</A>
</DT>

<DT><a name="S<FONT SIZE=-1>TATE</FONT>"></a>S<FONT SIZE=-1>TATE</FONT> 
<A HREF="pat5hfs.htm#top" TARGET="_mainDisplayFrame"><B>305</B></A>
</DT>

<DD>C++ idiom for, <I>see</I> <A HREF="index-E.htm#envelope-letter idiom" target="TEXT">envelope-letter idiom</A></DD>

<DD>in catalog summary 
<A HREF="chap1fs.htm#cat-state" TARGET="_mainDisplayFrame">9</A>
</DD>

<DD>use of delegation in 
<A HREF="chap1fs.htm#deleg-state" TARGET="_mainDisplayFrame">21</A>
</DD>

<DT>State</DT>

<DD>participant of S<FONT SIZE=-1>TATE</FONT> 
<A HREF="pat5hfs.htm#participants" TARGET="_mainDisplayFrame">306</A>,
<A HREF="pat5hfs.htm#structure" TARGET="_mainDisplayFrame"><I>306c</I></A>
</DD>

<DT><a name="state"></a>state</DT>

<DD>accumulating during traversal 
<A HREF="pat5kfs.htm#accumulatingstate" TARGET="_mainDisplayFrame">336</A>
</DD>

<DD>avoiding inconsistent 
<A HREF="pat5hfs.htm#state-avoid-inconsistent" TARGET="_mainDisplayFrame">308</A>
</DD>

<DD>extrinsic 
<A HREF="pat4ffs.htm#def-extrinsicstate" TARGET="_mainDisplayFrame">196</A>
</DD>

<DD>incremental changes to 
<A HREF="pat5ffs.htm#state-incr-changes" TARGET="_mainDisplayFrame">287</A>
</DD>

<DD>intrinsic 
<A HREF="pat4ffs.htm#def-intrinsicstate" TARGET="_mainDisplayFrame">196</A>
</DD>

<DD>sharing 
<A HREF="pat5hfs.htm#state-sharing" TARGET="_mainDisplayFrame">308</A>, 
<I>see also</I> <A HREF="index-F.htm#F<FONT SIZE=-1>LYWEIGHT</FONT>" target="TEXT">F<FONT SIZE=-1>LYWEIGHT</FONT></A>
</DD>

<DT><a name="state"></a>state transitions</DT>

<DD>atomic 
<A HREF="pat5hfs.htm#state-atomic" TARGET="_mainDisplayFrame">308</A>
</DD>

<DD>defining 
<A HREF="pat5hfs.htm#implementation" TARGET="_mainDisplayFrame">308</A>
</DD>

<DD>table-driven 
<A HREF="pat5hfs.htm#state-tablebased" TARGET="_mainDisplayFrame">308</A>
</DD>

<DT>S<FONT SIZE=-1>TRATEGY</FONT>
<A HREF="pat5ifs.htm#top" TARGET="_mainDisplayFrame"><B>315</B></A>
</DT>

<DD>compared with D<FONT SIZE=-1>ECORATOR</FONT> 
<A HREF="pat4dfs.htm#strat-vs-decor" TARGET="_mainDisplayFrame">179</A>
</DD>

<DD>in catalog summary 
<A HREF="chap1fs.htm#cat-strat" TARGET="_mainDisplayFrame">8</A>
</DD>

<DD>Lexi's use of 
<A HREF="chap2fs.htm#strat-lexi" TARGET="_mainDisplayFrame">42</A>
</DD>

<DD>use in Choices 
<A HREF="pat4efs.htm#strat-in-choices" TARGET="_mainDisplayFrame">193</A>
</DD>

<DD>use in Model/View/Controller 
<A HREF="chap1fs.htm#strat-in-mvc" TARGET="_mainDisplayFrame">6</A>
</DD>

<DD>use of delegation in 
<A HREF="chap1fs.htm#deleg-strat" TARGET="_mainDisplayFrame">21</A>
</DD>

<DT><a name="Strategy"></a>Strategy
<A HREF="pat4dfs.htm#strat-180o" TARGET="_mainDisplayFrame"><I>180o</I></A>
</DT>

<DD>making optional 
<A HREF="pat5ifs.htm#strat-optional" TARGET="_mainDisplayFrame">320</A>
</DD>

<DD>participant of S<FONT SIZE=-1>TRATEGY</FONT><A HREF="pat5ifs.htm#strat-316c" TARGET="_mainDisplayFrame"><I>316c</I></A>, 
<A HREF="pat5ifs.htm#participants" TARGET="_mainDisplayFrame">316</A>
</DD>

<DT>strategy 
<A HREF="pat5ifs.htm#def-strategy" TARGET="_mainDisplayFrame"><B>315</B></A>
</DT>

<DT>Stream 
<A HREF="pat4dfs.htm#stream" TARGET="_mainDisplayFrame">183</A>,
<A HREF="pat4dfs.htm#183c" TARGET="_mainDisplayFrame"><I>183c</I></A>
</DT>

<DT>StreamDecorator<A HREF="pat4dfs.htm#streamdecorator" TARGET="_mainDisplayFrame">183</A>,
<A HREF="pat4dfs.htm#183c" TARGET="_mainDisplayFrame"><I>183c</I></A>
</DT>

<DT>stretchability 
<A HREF="pat5ifs.htm#stretchability" TARGET="_mainDisplayFrame">320</A>
</DT>

<DT>Stroustrup, Bjarne 
<A HREF="pat4bfs.htm#stroustrup" TARGET="_mainDisplayFrame">160</A>
</DT>

<DT>structural pattern 
<A HREF="chap1fs.htm#structural-pattern" TARGET="_mainDisplayFrame"><B>10</B></A>, 
<A HREF="chap4fs.htm#top" TARGET="_mainDisplayFrame">137</A>
</DT>

<DD>comparison between class and object scope 
<A HREF="chap4fs.htm#top" TARGET="_mainDisplayFrame">137</A>
</DD>

<DD>discussion of 
<A HREF="disc4fs.htm#top" TARGET="_mainDisplayFrame">219</A>
</DD>

<DT>subclass, <I>see</I> <A HREF="index-C.htm#class" target="TEXT">class, subclass</A></DT>

<DT>subclassing</DT>

<DD>extending functionality by 
<A HREF="chap1fs.htm#subclass-ext-funct" TARGET="_mainDisplayFrame">24</A>
</DD>

<DT>Subject 
<A HREF="pat5gfs.htm#subject" TARGET="_mainDisplayFrame">301</A>
</DT>

<DD>avoiding dangling references to 
<A HREF="pat5gfs.htm#subj-avoid-dangle" TARGET="_mainDisplayFrame">297</A>
</DD>

<DD>combining with Observer<A HREF="pat5gfs.htm#subj-w-obser" TARGET="_mainDisplayFrame">300</A>
</DD>

<DD>participant of O<FONT SIZE=-1>BSERVER</FONT>
<A HREF="pat5gfs.htm#structure" TARGET="_mainDisplayFrame"><I>294c</I></A>, 
<A HREF="pat5gfs.htm#participants" TARGET="_mainDisplayFrame">295</A>,
<A HREF="pat5gfs.htm#subj-295i" TARGET="_mainDisplayFrame"><I>295i</I></A>,
<A HREF="pat5gfs.htm#subj-300c" TARGET="_mainDisplayFrame"><I>300c</I></A>,
<A HREF="disc5fs.htm#subj-347i" TARGET="_mainDisplayFrame"><I>347i</I></A>
</DD>

<DD>participant of P<FONT SIZE=-1>ROXY</FONT>
<A HREF="pat4gfs.htm#structure" TARGET="_mainDisplayFrame"><I>209co</I></A>, 
<A HREF="pat4gfs.htm#subj-part-proxy" TARGET="_mainDisplayFrame">210</A>
</DD>

<DT>subject 
<A HREF="pat5gfs.htm#def-subject" TARGET="_mainDisplayFrame"><B>294</B></A>
</DT>

<DD>mapping to observers 
<A HREF="pat5gfs.htm#subj-map-obsrv" TARGET="_mainDisplayFrame">297</A>
</DD>

<DD>observing more than one 
<A HREF="pat5gfs.htm#subj-mult-obsrv" TARGET="_mainDisplayFrame">297</A>
</DD>

<DT>subsystem 
<A HREF="chapAfs.htm#subsystem" TARGET="_mainDisplayFrame"><B>361</B></A>
</DT>

<DD>simplifying interface to, <I>see</I> <A HREF="index-F.htm#F<FONT SIZE=-1>ACADE</FONT>" target="TEXT">F<FONT SIZE=-1>ACADE</FONT></A></DD>

<DT>subtype, <I>see</I> <a href="index-T.htm#type" target="TEXT">type, subtype</a></DT>

<DT>successor 
<A HREF="pat5afs.htm#def-successor" TARGET="_mainDisplayFrame"><B>224</B></A>
</DT>

<DD>connecting in chain 
<A HREF="pat5afs.htm#succ-connect" TARGET="_mainDisplayFrame">227</A>
</DD>

<DD>implementing chain of 
<A HREF="pat5afs.htm#participants" TARGET="_mainDisplayFrame">225</A>
</DD>

<DT>superclass 
<A HREF="chapAfs.htm#superclass" TARGET="_mainDisplayFrame"><B>361</B></A>, 
<I>see also</I> <A HREF="index-C.htm#class" target="TEXT">class, parent</A></DT>

<DT>supertype, <I>see</I> <A HREF="index-T.htm#type" target="TEXT">type, supertype</A></DT>

<DT>Surrogate, <I>see</I> <A HREF="index-P.htm#P<FONT SIZE=-1>ROXY</FONT>" target="TEXT">P<FONT SIZE=-1>ROXY</FONT></A></DT>

<DT>Sutherland, Ivan 
<A HREF="pat3dfs.htm#sutherland" TARGET="_mainDisplayFrame">125</A>
</DT>

<DT>swaps 
<A HREF="pat5ifs.htm#swaps" TARGET="_mainDisplayFrame">323</A>
</DT>

</DL>


